﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.IO;

namespace Presentation.Pages
{
    public partial class Batismo : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
                verificarFotos();
        }

        private void carregarAnos()
        {
            List<string> anos = DEBatismo.buscarAnos(this.Server);
            DirectoryInfo dir;
            List<DEBatismo> lista = new List<DEBatismo>();

            foreach (string a in anos)
            {
                dir = new DirectoryInfo(a);
                lista.Add(new DEBatismo() { Ano = dir.Name });
            }

            rptAno.DataSource = lista;
            rptAno.DataBind();
        }

       protected void ano_Click(object sender, EventArgs e)
        {
            string arg = ((LinkButton)sender).CommandArgument;

            carregarMeses(arg);
        }

       protected void mes_Click(object sender, EventArgs e)
       {
           string arg = ((LinkButton)sender).CommandArgument;
           string mes = arg.Substring(0, 2);
           string ano = arg.Substring(2);

           carregarFotos(ano, mes);
       }

        private void carregarMeses(string ano)
        {
            List<string> meses = DEBatismo.buscarMeses(this.Server, ano);
            DirectoryInfo dir;
            List<DEBatismo> lista = new List<DEBatismo>();

            foreach (string m in meses)
            {
                dir = new DirectoryInfo(m);
                lista.Add(new DEBatismo() { Mes = dir.Name, Ano = ano });
            }

            rptMes.DataSource = lista;
            rptMes.DataBind();

            rptAno.DataSource = null;
            rptAno.DataBind();
        }

        private void carregarFotos(string ano, string mes)
        {
            List<DEBatismo> fotos = DEBatismo.buscarFotos(this.Server, ano, mes);

            rptAno.DataSource = null;
            rptAno.DataBind();

            rptMes.DataSource = null;
            rptMes.DataBind();

            rptFotos.DataSource = fotos;
            rptFotos.DataBind();
        }

        private void verificarFotos()
        {
            try
            {
                if (Request.QueryString["ano"] == null)
                    carregarAnos();
                else if (Request.QueryString["mes"] == null)
                    carregarMeses(Request.QueryString["ano"]);
                else
                    carregarFotos(Request.QueryString["ano"], Request.QueryString["mes"]);
            }
            catch (Exception)
            {
                Util.showMessage(this, "Houve um erro ao carregar as fotos", key: "erro");
            }
        }
    }
}